home *** CD-ROM | disk | FTP | other *** search
/ Compute! Gazette 1984 June / 1984-06.d64 / castle dungeon64 (.txt) < prev    next >
Commodore BASIC  |  2022-09-20  |  7KB  |  179 lines

  1. 0 gosub 5000:gosub1500:gosub200:gosub1000:gosub1100:gosub1300::gosub1010
  2. 1 gosub 1140
  3. 5 gosub 3000:gosub 4000:gosub 1500:ti$="000000"
  4. 7 gosub 20:goto 7
  5. 10 joy=0:jy=peek(56320):j2=15-(jyand15):onj2 goto11,12,12,13,13,13,13,14:return
  6. 11 joy=-40:return
  7. 12 joy=40:return
  8. 13 joy=-1:return
  9. 14 joy=1:return
  10. 20 gosub 10
  11. 25 get a$:ifa$="l" then gosub 491:levitate=-1
  12. 27 if ti$>"000300"then a$="your time ran out":goto 600
  13. 30 temp=peek(man+joy)-40:iftemp<0thenlevitate=0:goto170
  14. 40 on temp gosub 50,60,80,90,110,130,140,150,160:goto 170
  15. 50 gosub 220:joy=0:return
  16. 60 ifnotlevitatethenpokeman,blank:gosub125:a$="you fell into a pit":goto105
  17. 70 k=1:return
  18. 80 key=-1:poke1303,43:poke55575,1:gosub 401:return
  19. 90 gosub 320:if not swrd then a$="you lost to a beast":goto 600
  20. 100 gosub 360:return
  21. 105 gosub 220:fortd=1to200:next:goto 600
  22. 110 bomb=bomb-1:poke 1823+40*bomb,45:poke 56095+40*bomb,1:if bomb=0 then 500
  23. 120 return
  24. 125 gosub260:gosub220:fortd=1to200:return
  25. 130 return
  26. 140 if not key then gosub 220:joy=0:return
  27. 150 return
  28. 160 swrd=-1:gosub 401:poke 1423,49:poke55695,1:return
  29. 170 xh=0:poke man,blank:man=man+joy:poke man,figure:if k=1 then poke man,42:k=1
  30. 180 q=man-1024:y=int(q/40):x=(q-y*40)*8:ifx>255thenxh=int(x/256):x=x-xh*256
  31. 190 y=y*8+32:poke hxsprite,xh:poke lxsprite,x:poke ysprite,y:blank=32
  32. 195 ifk=1thenk=0:blank=42
  33. 196 return
  34. 200 for i=1to4:read no(1,i),dur(1,i):next
  35. 201 for i=1to7:read no(2,i),nl(2,i),dur(2,i):next
  36. 205 return
  37. 210 data 8,100,7,50,7,50,12,300,14
  38. 211 data 2,24,100,2,24,100,2,24,100,2,163,100,2,24,100,2,163,100,3,35
  39. 220 rem bump sound
  40. 230 poke h1,15:poke l1,10
  41. 240 poke volume,15:poke attdec,20:poke sustrel,5:poke wave,noise
  42. 250 for td=1to10:next:poke wave,noise-1:for td=1to2:next:return
  43. 260 rem falling sound
  44. 270 poke attdec,10:poke sustrel,10:poke volume ,15
  45. 280 for i=200 to 100 step-1
  46. 290 poke h1,i:poke h2,100:poke wave,triangle
  47. 300 for td=1to3:next:poke wave,triangle-1:for td=1to3:next:next i
  48. 310 return
  49. 320 rem lion sound
  50. 330 poke attdec,100:poke sustrel,100:poke volume,15
  51. 340 poke h1,2 :poke h2,10:poke wave,noise:fortd=1to1000:next:poke wave,noise-1
  52. 350 fortd=1to100:next:return
  53. 360 rem victory sound
  54. 370 poke attdec,100:poke sustrel,100:poke volume,15
  55. 380 fori= 1 to 4:poke h1,no(1,i):poke h2,100:poke wave,saw
  56. 390 for td=1 to dur(1,i):next:poke wave,saw-1:for td=1 to dur(1,i):next:next
  57. 400 return
  58. 401 poke attdec,14:poke sustrel,201
  59. 402 poke h1,120:poke wave,saw:fortd=1to100:next:pokewave,saw-1
  60. 403 for td=1to200:next:return
  61. 410 rem win sound and opening sound
  62. 420 pokevolume,15:poke attdec,17:poke sustrel,140
  63. 430 for i= 1to7:poke h2,no(2,i):poke h1,nl(2,i):poke wave ,saw
  64. 440 for td=1todur(2,i):next:pokewave,saw-1:fortd=1todur(2,i):next:next:return
  65. 450 rem lose sound
  66. 460 poke attdec,100:poke sustrel,120:poke volume,15
  67. 470 poke h1,4:poke l1,48:poke wave,saw:fortd=1to500:next:poke wave,saw-1
  68. 480 for td=1to400:next:poke h1,2:pokel1,24:pokewave,saw:fortd=1to900:next
  69. 485 pokewave,saw-1:for td=1to500:next:return
  70. 490 rem levitate sound
  71. 491 poke attdec,100:poke sustrel,250:poke volume,15
  72. 492 for a=10to20:for b=20 to27:poke h1,a+b:poke l1,40:poke wave,triangle
  73. 493 for td=1 to2 :next:poke wave,triangle-1:for td=1 to 1:next:next:next
  74. 494 return
  75. 500 poke53269,0:gosub 410:poke background,1:for td=1 to 2000:next
  76. 510 print"[147]":poke 251,50:print"[144]congratulations !"
  77. 520 print"you saved the castle"
  78. 530 goto 700
  79. 600 poke 53269,0:poke background,1:gosub 450:for td=1 to 2000:next
  80. 610 print"[147][144]"spc(((40-(len(a$)))/2))a$
  81. 620 print"you lost the castle!"
  82. 630 goto 710
  83. 700 poke251,0:fortd=1to1500:next:print"this time"
  84. 710 fortd=1to500:next:print"      hit y for further adventures"
  85. 720 get ans$:ifans$=""then720
  86. 730 if ans$="y"then poke background,0:goto 5
  87. 740 poke251,0:end
  88. 1000 forl=679to703:reada:pokel,a:next:poke806,167:poke807,2:poke251,40:return
  89. 1010 printchr$(144)"[147]  find the bombs hidden in the dungeon."
  90. 1020 print"don't fall into a pit or get eaten by "
  91. 1030 print"a beast. press the 'l' key for a "
  92. 1040 print"  levitation spell. you have 3 minutes"
  93. 1050 print"  to fulfill your quest."
  94. 1060 print:print:print"         (hit button to begin)"
  95. 1065 gosub 10:if jy<>111 then 1065
  96. 1067 return
  97. 1070 data72,138,72,152,72,166,251,240,8,160,255,136,208,253,202
  98. 1080 data 208,248,104,168,104,170,104,76,202,241
  99. 1100 cm=14336:cs=53248:poke56334,peek(56334)and254:poke1,peek(1)and251
  100. 1110 fori=0to1023:pokecm+i,peek(cs+i):next
  101. 1120 fori=cm+320tocm+320+95:reada:pokei,abs(a-255):next
  102. 1130 poke1,peek(1)or4:poke56334,peek(56334)or1:return
  103. 1140 poke53272,(peek(53272)and240)or14
  104. 1150 return
  105. 1160 data247,227,246,193,215,247,235,235,255,34,34,34,255,68,68,68
  106. 1170 data255,231,195,129,129,131,199,255,255,191,95,64,90,186,255,255
  107. 1180 data191,121,112,1,0,135,55,115,255,239,247,231,195,195,231,255
  108. 1190 data255,255,255,255,255,255,255,255,255,255,255,129,129,255,255,255
  109. 1200 data255,255,255,255,255,255,255,255,255,253,251,247,143,207,175,255
  110. 1210 data191,121,112,1,0,135,55,115,255,255,231,0,0,231,255,255
  111. 1300 print chr$(147):poke background,0:poke brder,0
  112. 1305 read l,n:ifn=-1then gosub410:fortd=1to2500:next:return
  113. 1310 forj=0ton:reads:pokel+j,s:next:goto1305
  114. 1360 data1234,17,85,64,73,112,64,110,85,64,75,64,114,64,112,32,32,112,64,75
  115. 1370 data1274,16,93,32,32,107,64,115,74,64,73,32,93,32,93,32,32,107,64
  116. 1380 data1314,17,74,64,75,75,32,125,85,64,75,32,75,32,74,64,75,109,64,73
  117. 1420 data1393,20,114,64,73,73,32,110,85,73,110,85,64,73,112,64,75,85,64,73,85,73
  118. 1430 data 110
  119. 1440 data1433,20,93,32,93,93,32,93,93,93,93,93,64,73,107,64,32,93,32,93,93,93,93
  120. 1450 data1473,20,113,64,75,74,64,115,125,74,75,74,64,75,109,64,73,74,64,75,125
  121. 1455 data 74,75,-1,-1
  122. 1500 wave=54276:noise=129:triangle=17:vol=54296:sound=54272:attdec=54277
  123. 1505 background=53281:brder=53280:levitate=0:swrd=0:key=0:bomb=3:loin=44
  124. 1510 saw=33:sustrel=54278:h1=54273:h2=54272:figure=40:blank=32
  125. 1515 hxsprite=53264:lxsprite=53248:ysprite=53249:poke 53271,1:poke 53277,1
  126. 1517 poke 53269,1:fori=832to896:pokei,255:next:poke2040,13
  127. 1518 poke 53287,1:poke53275,1
  128. 1520 for i=sound to sound+28:pokei,0:next:poke volume,15:return
  129. 3000 i=49152:if peek(i+2)=216thensys49160:goto 3025
  130. 3010 read a:if a=256 thensys49160:goto 3025
  131. 3020 poke i,a:i=i+1:goto 3010
  132. 3025 fori=1024to1062:pokei,41:pokei+960,41:next
  133. 3027 fori=55296to56295:pokei,0:next:return
  134. 3030 data 1,0,216,255,255,255,40
  135. 3040 data 0,169,41,133,251,169,40
  136. 3050 data 133,253,169,4,133,252,133
  137. 3060 data 254,169,147,32,210,255,162
  138. 3070 data 0,160,0,169,41 ,145,253
  139. 3080 data 200,192,39,208,249,24,165
  140. 3090 data 253,105,40,133,253,144,2
  141. 3100 data 230,254,232,224,23,208,229
  142. 3110 data 160,0,169,4,145,251,169
  143. 3120 data 255,141,15,212,169,128,141
  144. 3130 data 18,212,173,27,212,41,3
  145. 3140 data 133,173,170,10,168,24,185
  146. 3150 data 0,192,101,251,133,170,185
  147. 3160 data 1,192,101,252,133,171,24
  148. 3170 data 185,0,192,101,170,133,253
  149. 3180 data 185,1,192,101,171,133,254
  150. 3190 data 160,0,177,253,201,41,208
  151. 3200 data 18,138,145,253,169,32,145
  152. 3210 data 170,165,253,133,251,165,254
  153. 3220 data 133,252,76,62,192,232,138
  154. 3230 data 41,3,197,173,208,189,177
  155. 3240 data 251,170,169,32,145,251,224
  156. 3250 data 4,240,26,138,10,168,162
  157. 3260 data 2,56,165,251,249,0,192
  158. 3270 data 133,251,165,252,249,1,192
  159. 3280 data 133,252,202,208,238,76,62
  160. 3290 data 192,169,1,160,0,153,0
  161. 3300 data 216,153,0,217,153,0,218
  162. 3310 data 153,0,219,200,208,241,96,256
  163. 4000 rem character placements
  164. 4010 t=32:q=42:for i=1 to 7:gosub 4100:next
  165. 4020 q=44:for i=1 to 6:gosub 4100:next
  166. 4030 q=45:for i=1 to 3:gosub 4100:next
  167. 4040 q=43:for i=1 to 2:gosub 4100:next
  168. 4050 q=47:for i=1 to 5
  169. 4055 gosub 4100
  170. 4060 if(peek(place-40)<>32)or(peek(place+40)<>32)thenpokeplace,blank:goto4055
  171. 4070 next
  172. 4080 q=49:gosub 4100
  173. 4090 q=figure:gosub 4100:man=place
  174. 4095 t=41:q=32:fori=1to50:gosub 4100:next:return
  175. 4100 x=(rnd(1)*36+2):y=int(rnd(1)*20+3):pl=y*40+x+1024:ifpeek(place)<>tthen4100
  176. 4110 poke place,q:return
  177. 5000 print"[147]please wait"
  178. 5010 return
  179.